﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo1
{
    // 特殊的类：接口
    // 接口定义：接口是一组方法的集合，并且方法是没有实现的
    // 关键字： interface

    /// <summary>
    /// 定义一个消息推送的接口
    /// 命名规范 前缀I+定义的名称 
    /// </summary>
    public interface IMessage
    {
        // 接口中的方法只作定义，没有实现内容
        // 没有访问修饰符
        void SendMessage(string username, string messageString);
    }

    // 因为计划无法跟上变化，具体的实现都由此接口来规范
    /// <summary>
    /// 邮件发送消息的实现
    /// </summary>
    public class EmailMessage : IMessage
    {
        public void SendMessage(string username, string messageString)
        {
            Console.WriteLine($"发送邮件给：[{username}], 内容：[{messageString}]");
            // 此略N行代码，实现发送邮件的逻辑
            // 使用示例
            string smtpServer = "smtp@163.com";
            int smtpPort = 587;
            string smtpUsername = "thirdfinger@163.com";
            string smtpPassword = "your-password";

            EmailSender emailSender = new EmailSender(smtpServer, smtpPort, smtpUsername, smtpPassword);

            string from = "thirdfinger@163.com";
            string to = username;
            string subject = "测试邮件10.16";
            string body = "<h1>这是一封测试邮件</h1><p>" + messageString + "。</p>";

            emailSender.SendEmail(from, to, subject, body);
        }
    }

    public class PhoneMsg : IMessage
    {
        public void SendMessage(string username, string messageString)
        {
            Console.WriteLine($"发送短信给：[{username}], 内容：[{messageString}]");
            // 此略N行代码，实现发送短信的逻辑
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            IMessage sent = new EmailMessage();
            sent.SendMessage("thirdfinger@163.com", "主人早上好，记得上课别玩游戏！");

            Console.ReadKey();
        }
    }
}
